package com.example.myapplication.api;

import com.example.myapplication.entity.AlbumDetail;
import com.example.myapplication.entity.Banner;
import com.example.myapplication.entity.BaseResponse;
import com.example.myapplication.entity.CommentSong;
import com.example.myapplication.entity.CommentVideo;
import com.example.myapplication.entity.Desc;
import com.example.myapplication.entity.Dj;
import com.example.myapplication.entity.DjBanner;
import com.example.myapplication.entity.HotTopic;
import com.example.myapplication.entity.Lrc;
import com.example.myapplication.entity.Mv;
import com.example.myapplication.entity.Personalized;
import com.example.myapplication.entity.PlayList;
import com.example.myapplication.entity.PlayListDetail;
import com.example.myapplication.entity.RecommendResource;
import com.example.myapplication.entity.RecommendSongs;
import com.example.myapplication.entity.RecommendVideo;
import com.example.myapplication.entity.RelatedVideo;
import com.example.myapplication.entity.Search;
import com.example.myapplication.entity.Song;
import com.example.myapplication.entity.TopPlayLists;
import com.example.myapplication.entity.UserPlayList;
import com.example.myapplication.entity.VideoDetail;
import com.example.myapplication.entity.VideoDetailInfo;
import com.example.myapplication.entity.VideoUrl;

import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Path;
import retrofit2.http.Query;

public interface    MusicApiService {
    @GET("top/artists")
    Call<BaseResponse>getArtistList(@Query("limit") int limit,
                                    @Query("offset") int offset,
                                    @Query("type") int type,
                                    @Query("area") int area);

    @GET("top/artists")
    Call<BaseResponse>getArtistList();

    @GET("top/artists")
    Call<BaseResponse>getArtistList(@Query("limit") int limit);

    @GET("top/artists")
    Call<BaseResponse>getArtistList(@Query("limit") int limit,
                                    @Query("offset") int offset);

    @GET("artist/top/song")
    Call<BaseResponse>getHotSong(@Query("id") int id);

    @GET("artist/album")
    Call<BaseResponse>getHotAlbums(@Query("id") int id);

    @GET("personalized/newsong")
    Call<BaseResponse>getNewSong(@Query("limit") int limit);
    @GET("personalized/newsong")
    Call<BaseResponse>getNewSong();

    @GET("personalized")
    Call<Personalized>getPersonalized();
    @GET("personalized")
    Call<Personalized>getPersonalized(@Query("limit") int limit);

    @GET("recommend/songs")
    Call<RecommendSongs>getRecommendSongs(@Query("cookie")String cookie);

    @GET("song/url")
    Call<Song>getSong(@Query("cookie")String cookie,@Query("id") int id);

    @GET("lyric")
    Call<Lrc>getLrc(@Query("id") int id);

    @GET("cloudsearch")
    Call<Search>getSearch(@Query("keywords") String keyword);


    @GET("recommend/resource")
    Call<RecommendResource>getRecommendResource(@Query("cookie")String cookie);

    @GET("banner")
    Call<Banner>getBanner(@Query("type") int type);

    @GET("artist/mv")
    Call<Mv>getMv(@Query("id") int id);

    @GET("artist/desc")
    Call<Desc>getDesc(@Query("id") int id);

    @GET("album")
    Call<AlbumDetail>getAlbumDetail(@Query("id") int id);

    @GET("dj/banner")
    Call<DjBanner>getDjBanner();

    @GET("dj/hot")
    Call<Dj>getDj();

    @GET("playlist/detail")
    Call<PlayListDetail>getPlayListDetail(@Query("cookie")String cookie,@Query("id") String id);

    @GET("hot/topic")
    Call<HotTopic>getHotTopic(@Query("cookie")String cookie);

    @GET("video/detail")
    Call<VideoDetail>getVideoDetail(@Query("id")String id);

    @GET("video/url")
    Call<VideoUrl>getVideoUrl(@Query("id")String id);


    @GET("video/timeline/recommend")
    Call<RecommendVideo>getRecommendVideo(@Query("offset")int offset);
    @GET("video/timeline/recommend")
    Call<RecommendVideo>getRecommendVideo(@Query("cookie")String cookie,@Query("offset")int offset);


    @GET("related/allvideo")
    Call<RelatedVideo>getRelatedVideo(@Query("id")String id);


    @GET("video/detail/info")
    Call<VideoDetailInfo>getVideoDetailInfo(@Query("vid")String id);

    @GET("comment/video")
    Call<CommentVideo>getCommentVideo(@Query("id")String id);


    @GET("user/playlist")
    Call<UserPlayList>getUserPlayList(@Query("uid")Long uid);

    @GET("top/playlist")
    Call<TopPlayLists>getTopPlayList(@Query("offset")int offset);

    @GET("comment/music")
    Call<CommentSong>getCommentSong(@Query("id")int id);
}
